<?php
/**
 * 节点模型
 * 
 * @author  Lee <a605333742@gmail.com>
 * @time    2016-03-24
 */
namespace Model;
use Think\Model;

class NodeModel extends Model{    
    /*
     * 修改指定节点
     * 
     * @return bool
     */    
    public function editNode($where){
        $g='';                          //新增或者修改的标识
        if(!$where['id']){
            /*id不存在为新增*/
            $where['add_time']  =time();        
            if($this->add($where)){
                //新增没有id，需要先插入数据产生一个id，再查询出来和父id拼接形成路径
                unset($where['id']);
                $newid  =$this->where($where)->find();
                $new_id=$newid['id'];
                $up['id']   =$new_id;//新增数据的id
                //拼接路径，判断插入数据是否为顶级节点，如果是，则路径为其id，否则拼接父id作为路径
                if(!$where['p_id'] ){
                    //如果p_id为假，则说明添加的是顶级节点
                    $up['path'] =$new_id.'-';
                }else{
                    /*如果父id存在，则说明添加的是二级节点，根据父id查询控制器名称，放到子节点中*/
                    //组装条件   
                    $data2              =$where['p_id'];
                    $controllerName     =$this->find($data2);
                    $up['controller']   =$controllerName['controller'];
                    /*end查询放置controller*/
                    //拼装路径
                    $up['path']         =$where['p_id'].'-'.$new_id.'-';
                } 
                if($this->save($up)){
                    $g='新增';
                }else{
                    return FALSE;
                }
            }
            /*end新增*/
        }else{
            /*id存在为修改*/
            /*提交的是父节点列表id，需要在此修将id转为controller*/
            //组装条件
            if($where['p_id']){
                $data1  =$where['p_id'];
            }else{                
                $data1  =$where['id'];
            }
            $nodeName=$this->find($data1);
            $where['controller']=$nodeName['controller'];
            /*end转为controller*/
            if($this->save($where)){
               $g='修改';   
            }
            /*end 修改*/
        }
        $data=array(
            'user_id'   =>session("authId"),
            'content'   =>$g.'了名称为 '.$where['node_name'].' 的节点',
            'add_time'  =>time()
        );
        if(M("Log")->add($data)){
            return TRUE;
        }else{
            return FALSE;
        }
    }
    
    /*
     * 删除指定节点
     * 
     * @return bool
     */
    public function del($where){
        if($this->save($where)){
            $node_name      =$this->field("node_name")->find($where['id']);
            $name           =$node_name['node_name'];
            $data1=array(
                "user_id"   =>session("authId"),
                "content"   =>"删除了标题为"." {$name} "."的节点",
                "add_time"  =>time()
            );
            if(M("Log")->add($data1)){
                return TRUE;
            }else{
                return FALSE;
            }
        }else{
           return FALSE;
       }
    }
}
